]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
keyboard: Run dispose manually on virtual input device when destroying
authorJonas Dreßler <verdre@v0yd.nl>
Sat, 28 Mar 2020 10:54:32 +0000 (11:54 +0100)
committerverdre <jonas@dressler.it>
Sat, 28 Mar 2020 17:31:04 +0000 (17:31 +0000)
We want to make sure any buttons that are still pressed on the virtual
input device used by the OSK are released immediately when destroying
the OSK. Do this by calling run_dispose() on the destroy() function of
the KeyboardController, which makes sure we don't have to wait for the
garbage collection to dispose the object and a still pressed key remains
being pressed until the GC kicks in.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2287

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/956
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1141

js/ui/keyboard.js

index 7d56ef9c8fc8da88266e280649515e7de8409694..8b7f0f895bc879e89d9a2137e5c87da5558b0b07 100644 (file)
@@ -1868,6 +1868,10 @@ var KeyboardController = class {
         Main.inputMethod.disconnect(this._notifyContentPurposeId);
         Main.inputMethod.disconnect(this._notifyContentHintsId);
         Main.inputMethod.disconnect(this._notifyInputPanelStateId);
+
+        // Make sure any buttons pressed by the virtual device are released
+        // immediately instead of waiting for the next GC cycle
+        this._virtualDevice.run_dispose();
     }
 
     _onSourcesModified() {